package com.xbongbong.pro.enums.teammembers.enums;

import com.xbongbong.saas.enums.XbbRefTypeEnum;
import lombok.Getter;

import java.util.Objects;

/**
 * @author: 汪腾伟
 * @date: Created in 2021/12/3 16:27
 * @description： 表单设置-》数据共享/隔离设置枚举
 */
@Getter
public enum FormDefaultPatternEnum {
    /**
     * 客户管理
     */
    CUSTOMER_MANAGEMENT(XbbRefTypeEnum.CUSTOMER_MANAGEMENT.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 联系人
     */
    CONTACT(XbbRefTypeEnum.CONTACT.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 销售机会
     */
    SALES_OPPORTUNITY(XbbRefTypeEnum.SALES_OPPORTUNITY.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 报价单
     */
    QUOTATION(XbbRefTypeEnum.QUOTATION.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 合同订单
     */
    CONTRACT(XbbRefTypeEnum.CONTRACT.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 退货退款
     */
    REFUND(XbbRefTypeEnum.REFUND.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 应收款
     */
    PAYMENT(XbbRefTypeEnum.PAYMENT.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 回款单
     */
    PAYMENT_SHEET(XbbRefTypeEnum.PAYMENT_SHEET.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 付款计划
     */
    PAY_PLAN(XbbRefTypeEnum.PAY_PLAN.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 付款单
     */
    PAY_SHEET(XbbRefTypeEnum.PAY_SHEET.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 供应商
     */
    SUPPLIER(XbbRefTypeEnum.SUPPLIER.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 供应商联系人
     */
    SUPPLIER_CONTACT(XbbRefTypeEnum.SUPPLIER_CONTACT.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 采购合同
     */
    PURCHASE(XbbRefTypeEnum.PURCHASE.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 采购退货单
     */
    RETURNED_PURCHASE(XbbRefTypeEnum.RETURNED_PURCHASE.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * BOM清单
     */
    BOM_BILL(XbbRefTypeEnum.BOM_BILL.getCode(), FormPatternEnum.FORM_SHARE.getModel()),

    /**
     * 生产单
     */
    PRODUCTION_ORDER(XbbRefTypeEnum.PRODUCTION_ORDER.getCode(), FormPatternEnum.FORM_ISOLATION.getModel()),

    /**
     * 市场活动
     */
    MARKET_ACTIVITY(XbbRefTypeEnum.MARKET_ACTIVITY.getCode(), FormPatternEnum.FORM_ISOLATION.getModel()),

    /**
     * 线索
     */
    CLUE(XbbRefTypeEnum.CLUE.getCode(), FormPatternEnum.FORM_SHARE.getModel()),
    ;

    /**
     * 业务类型
     */
    private Integer businessType;

    /**
     * 数据共享或者隔离模式 0：共享 1：隔离
     * @see FormPatternEnum
     */
    private Integer model;

    FormDefaultPatternEnum(Integer businessType, Integer model) {
        this.businessType = businessType;
        this.model = model;
    }

    /**
     * 根据业务类型获取当前隔离模式
     *
     * @param businessType 业务类型
     * @return
     */
    public static boolean getModelByBusinessType(Integer businessType) {
        boolean formShareTag = true;
        for (FormDefaultPatternEnum formDefaultPatternEnum : FormDefaultPatternEnum.values()) {
            if (Objects.equals(businessType, formDefaultPatternEnum.getBusinessType())
                    && Objects.equals(formDefaultPatternEnum.getModel(), FormPatternEnum.FORM_ISOLATION.getModel())) {
                formShareTag = false;
            }
        }
        return formShareTag;
    }

    public static Integer getModelValueByBusinessType(Integer businessType) {
        for (FormDefaultPatternEnum value : FormDefaultPatternEnum.values()) {
            if (Objects.equals(value.getBusinessType(), businessType)) {
                return value.getModel();
            }
        }
        return FormPatternEnum.FORM_SHARE.getModel();
    }
}
